「 case 」式はElixirの制御フローの基盤です。命令型のswitch文とは異なり、 case 関数型の式として、一致したブランチの結果を返すため、開発者はマップやタプルといった複雑なデータ型を即座に分解でき、完全な論理構造を強制します。
1. パターンマッチングとバインディング
「 case 式は値を複数のパターンと照合してテストできます。一致する 最初に一致するパターン に対応するコードを実行し、そのコードの結果を返します。マッチ内での変数バインディングにより、ブランチのロジックで即座に利用可能です。
case dave do
%{state: some_state} = person ->
IO.puts "#{person.name} さんは #{some_state} に住んでいます"
end
%{state: some_state} = person ->
IO.puts "#{person.name} さんは #{some_state} に住んでいます"
end
2. 視覚的な論理フロー
3. ガード節と完全性
「 when 」キーワードを使うことで、構造的マッチに述語論理(例: is_number(age) and age >= 21)を追加できます。Elixirはすべての入力に対してマッチが必要です。もしどのパターンも一致しなければ、 CaseClauseError エラーがスローされます。
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>